﻿using Levfier.Proccessors.Chains;
using System;

namespace Levfier.Proccessors
{
    /// <summary>
    /// プロセッサの集まりベースクラス
    /// </summary>
    abstract public class ProccessorSetBase : Proccessor
    {
        /// <summary>
        /// プロセッサ同士を接続する
        /// </summary>
        /// <param name="upper">上流プロセッサ<param>
        /// <param name="lower">下流プロセッサ</param>
        protected void ChainProccessors(Proccessor upper, Proccessor lower)
        {
            //チェインを生成
            Chain tempChain = new BufferChain(VSTParameterManager.GetInstance().SampleCount);
            upper.SetLowerChain(tempChain);
            tempChain.SetProccessor(lower);
        }

        /// <summary>
        /// 使用しない
        /// </summary>
        /// <param name="inputBuffer">入力</param>
        /// <param name="outputBuffer">出力</param>
        protected override void InnerProccess(double[] inputBuffer, double[] outputBuffer)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// パラメータ初期化
        /// </summary>
        abstract protected override void InitParameters();
    }
}
